一個不小心在鐵人賽最後兩篇又開闢了一個新的主題 而且好像不來個五六篇寫不完哈哈
總之第一次參加鐵人賽 單純自我挑戰 把最近學的用的還有遇到的問題都記錄下來 希望有緣路過有看到的讀者有得到點什麼
kubeflow寫完之後 還是會時不時分享一些東西 沒有意外的話應該會都是devops相關的 有興趣的歡迎追蹤~
在上一篇文章,我們聊到為什麼機器學習需要一個像 Kubeflow 這樣的平台,以及它的核心價值:Portable、Scalable、Composable。這一篇,我們要更深入看看 Kubeflow 的「組成零件」,還有它的典型用法。
Kubeflow 並不是單一服務,而是一組模組化的元件。常見的有:
Kubeflow Pipelines (KFP)
Kubeflow Notebooks
apiVersion: v1
kind: Service
metadata:
  name: notebook-svc
spec:
  selector:
    app: notebook
  ports:
  - port: 80
    targetPort: 8888
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: mnist-model
spec:
  predictor:
    tensorflow:
      storageUri: gs://models/mnist
apiVersion: kubeflow.org/v1beta1
kind: Experiment
metadata:
  name: random-example
spec:
  objective:
    type: maximize
    goal: 0.99
    objectiveMetricName: accuracy
  algorithm:
    algorithmName: random
apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
  name: pytorch-job
spec:
  pytorchReplicaSpecs:
    Master:
      replicas: 1
      template:
        spec:
          containers:
          - name: pytorch
            image: pytorch/pytorch:1.10.0
    Worker:
      replicas: 2
      template:
        spec:
          containers:
          - name: pytorch
            image: pytorch/pytorch:1.10.0
我們來想像一個真實場景:
這樣一來,從研究到部署,團隊都在同一平台上協作,不再需要額外橋接環境。
Kubeflow 選擇 Kubernetes 作為基礎,有幾個關鍵理由:
Kubeflow 常見的應用場景包括:
如果說 Kubernetes 解決了「應用程式部署與運維」的問題,那麼 Kubeflow 就是解決「機器學習專案從實驗到生產」的問題。
它的核心價值在於:統一平台 + 模組化設計 + 建立在 Kubernetes 生態系之上。
而這些價值其實具體落在一個個 Kubernetes Object (Pod、Service、Job、CRD) 上,這讓我們能透過 YAML manifest 更直觀理解 Kubeflow。
接下來的文章,我會進一步分享 Kubeflow 的安裝與基本操作,帶大家從實務出發,一步一步上手。
參考資料: